layui.use(['layer', 'table'], function () {
  var layer = layui.layer, //弹层
    table = layui.table //表格

  //执行一个 table 实例
  var tableInit = table.render({
    id: 'templates',
    elem: '#templatesTable',
    // height: 'full-250',
    url: '/code/template/page', //数据接口,
    title: '数据库表',
    page: true, //开启分页,
    parseData: function (res) { //res 即为原始返回的数据
      return {
        'code': res.code, //解析接口状态
        'msg': res.msg, //解析提示文本
        'count': res.data.total, //解析数据长度
        'data': res.data.records //解析数据列表
      }
    },
    even: false, //开启隔行背景
    toolbar: '#templatesToolbar', //开启工具栏，此处显示默认图标，可以自定义模板，详见文档,
    totalRow: false, //开启合计行,
    cols: [
      [
        {
          type: 'checkbox',
          fixed: 'left'
        },
        {
          field: 'templateName',
          title: '模板名称'
        },
        {
          field: 'templateDesc',
          title: '模板描述'
        },
        {
          field: 'templateType',
          title: '模板类型'
        },
        {
          fixed: 'right',
          title: '操作',
          align: 'center',
          toolbar: '#templatesBar'
        }
      ]
    ]
  })

  var $ = layui.$

  //监听头工具栏事件
  table.on('toolbar(templatesFilter)', function (obj) {
    var checkStatus = table.checkStatus(obj.config.id),
      data = checkStatus.data //获取选中的数据
    switch (obj.event) {
      case 'add':
        $.get('/code/template/add', {}, function (str) {
          layer.open({
            type: 1,
            shadeClose: true,
            title: '新增模板',
            zIndex: 9900,
            area: ['40%', 'auto'],
            content: str //注意，如果str是object，那么需要字符拼接。
          })
        })
        break
      case 'delete':
        if (data.length === 0) {
          layer.msg('请选择一行')
        } else {
          data.forEach(row => {
            //向服务端发送删除指令
            $.post('/code/template/delete/' + row.id, function (response) {
              layer.msg(response.data, {
                time: 1000,
                icon: 1
              })
              tableInit.reload()
            })
          })
          refreshDataSource()
        }
        break
    }
  })

  //监听行工具事件
  table.on('tool(templatesFilter)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
    var data = obj.data, //获得当前行数据
      layEvent = obj.event //获得 lay-event 对应的值
    if (layEvent === 'test') {
      $.ajaxSetup({
        contentType: 'application/json;charset=utf-8'
      })

      $.post('/code/db/test', JSON.stringify(data), function (response) {
        layer.msg(response.data ? response.data : response.msg, {
          time: 1000,
          icon: response.data ? 1 : 2
        })
      }, 'json')
    } else if (layEvent === 'addFile') {
      $.get('/code/template/file/add', {templateId: data.id}, function (str) {
        layer.open({
          type: 1,
          title: '添加模版',
          zIndex: 9900,
          area: ['100%', '100%'],
          content: str //注意，如果str是object，那么需要字符拼接。
        })
      })
    } else if (layEvent === 'addField') {
      $.get('/code/template/field/add', {templateId: data.id}, function (str) {
        layer.open({
          type: 1,
          title: '添加字段',
          shadeClose: true,
          area: ['60%', '80%'],
          content: str //注意，如果str是object，那么需要字符拼接。
        })
      })
    } else if (layEvent === 'addDbField') {
      $.get('/code/field/add', {templateId: data.id}, function (str) {
        layer.open({
          type: 1,
          title: '配置映射类型',
          shadeClose: true,
          area: ['60%', '80%'],
          content: str //注意，如果str是object，那么需要字符拼接。
        })
      })
    } else if (layEvent === 'edit') {
      $.get('/code/template/update', {templateId: data.id}, function (str) {
        layer.open({
          type: 1,
          title: '修改模版',
          shadeClose: true,
          area: ['60%', 'auto'],
          content: str //注意，如果str是object，那么需要字符拼接。
        })
      })
    }
  })
})
